home *** CD-ROM | disk | FTP | other *** search
- @REM=("
- @perl %0.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
- @end ") if 0 ;
-
- #
- # Test the ioctl function for MS-DOS. Provide a list of drives and their
- # characteristics.
- #
- # By Diomidis Spinellis.
- #
-
- @fdnum = ("STDIN", "STDOUT", "STDERR");
- $maxdrives = 15;
- for ($i = 3; $i < $maxdrives; $i++) {
- open("FD$i", "nul");
- @fdnum[$i - 1] = "FD$i";
- }
- @mediatype = (
- "320/360 k floppy drive",
- "1.2M floppy",
- "720K floppy",
- "8'' single density floppy",
- "8'' double density floppy",
- "fixed disk",
- "tape drive",
- "1.44M floppy",
- "other"
- );
- print "The system has the following drives:\n";
- for ($i = 1; $i < $maxdrives; $i++) {
- if ($ret = ioctl(@fdnum[$i], 8, 0)) {
- $type = ($ret == 0) ? "removable" : "fixed";
- $ret = ioctl(@fdnum[$i], 9, 0);
- $location = ($ret & 0x800) ? "local" : "remote";
- ioctl(@fdnum[$i], 0x860d, $param);
- @par = unpack("CCSSSC31S", $param);
- $lock = (@par[2] & 2) ? "supporting door lock" : "not supporting door lock";
- printf "%c:$type $location @mediatype[@par[1]] @par[3] cylinders @par[6]
- sectors/track $lock\n", ord('A') + $i - 1;
- }
- }
-